﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenSource.UPnP;
using System.IO;
using System.Collections;
using System.Reflection;

namespace DispositifAffichage
{
   public class ClientDispositifAffichage
    {
        private UPnPSmartControlPoint cp;

        /**
           * \nb_dev1        le nombre de devices connectés
        */
        private int nb_dev;
        static ArrayList _zones = new ArrayList();
        string name;
        string resultat;
        public ClientDispositifAffichage(string name1, string resultat1)
        {
            nb_dev = 0;
            name = name1;
            resultat = resultat1;

        }

        static public ArrayList Zones
        {
            get { return _zones; }
            set { _zones = value; }
        }

       
        /**
        * \Search               méthode intermédiaire dans la recherche d'un device sur le réseau
        
        */
        public void Search()
        {
            cp = new UPnPSmartControlPoint(new UPnPSmartControlPoint.DeviceHandler(NewDevice));
            cp.OnRemovedDevice += new UPnPSmartControlPoint.DeviceHandler(DeviceQuit);
            cp.Rescan();
        }
        /**
        * \NewDevice                pour la recherche d'un device sur le réseau.
         * \param    sender1        sender1 pour le sender qui a declencher la methode.
        * \param    device          device est le device qui va apparaitre sur réseau.
         */
        public void NewDevice(UPnPSmartControlPoint sender, UPnPDevice device)
        {

            if (device.FriendlyName == name)
            {
                Console.WriteLine("trueeeeeeeeeeeeeeeee");

                UPnPArgument[] args = new UPnPArgument[1];


                UPnPService serv = device.GetService("Sample");


                if (serv == null)
                {
                    Console.Error.WriteLine("Could not find service `Sample' in device " + nb_dev);
                }

                Console.WriteLine("service  Sample  in device `" + name + "' is Found");

                args[0] = new UPnPArgument("resultat", resultat);
                serv.InvokeSync("getResultatFinal", args);


            }
        }



        /**
        * \DeviceQuit               affiche un message si un device a quitté le réseau
        * \param    sender1         sender1 pour le sender qui a déclenché la méthode.
        * \param    device          device est le device qui va quitter le réseau.
        */

        public void DeviceQuit(UPnPSmartControlPoint sender, UPnPDevice device)
        {

            Console.Out.WriteLine(name + " quit: " + nb_dev);

            nb_dev--;
        }



       
    }
}

